﻿using System;
using System.Data;

namespace Website_ES.Account
{
    public partial class Register : System.Web.UI.Page
    {
        private string type;
        private DataSet dataBaseUsers;

        protected void Page_Load(object sender, EventArgs e)
        {
            this.type = Request.QueryString["TYPE"];

            if (this.type == "USER") {
                PanelRegister.GroupingText = "Registrar Novo Usuário";
                ButtonRegister.Text = "Registrar Usuário";
            }
            else {
                PanelRegister.GroupingText = "Registrar Novo Funcionário";
                ButtonRegister.Text = "Registrar Funcionário";
            }
        }

        protected void ButtonRegister_Click(object sender, EventArgs e)
        {
            this.dataBaseUsers = new DataSet();
            //Preenche o DataSet com o XML
            string sXMLFile = MapPath("~/app_data/Usuarios.xml");
            this.dataBaseUsers.ReadXml(sXMLFile);

            if (!UserExists())
            {
                //Verifica se existe extrutura
                if (dataBaseUsers.Tables.Count == 0)
                {
                    //Cria a extrutura (colunas)
                    DataTable dt = new DataTable("Usuarios");
                    dt.Columns.Add("ID");
                    dt.Columns.Add("Nome");
                    dt.Columns.Add("RG");
                    dt.Columns.Add("CPF");
                    dt.Columns.Add("Telefone");
                    dt.Columns.Add("Email");
                    dt.Columns.Add("Senha");
                    dt.Columns.Add("Permission");
                    dataBaseUsers.Tables.Add(dt);
                }

                //Cria uma nova linha
                DataRow dRow = dataBaseUsers.Tables[0].NewRow();

                //Seta os valores
                dRow["ID"] = dataBaseUsers.Tables["Usuarios"].Rows.Count + 1; //Adiciona um identificador único com ID
                dRow["Nome"] = TextBoxNome.Text;
                dRow["RG"] = TextBoxRG.Text;
                dRow["CPF"] = TextBoxCPF.Text;
                dRow["Telefone"] = TextBoxTel.Text;
                dRow["Senha"] = TextBoxPassword.Text;
                dRow["Email"] = TextBoxEmail.Text;
                dRow["Permission"] = this.type;

                //Adiciona a linha no DataSet
                dataBaseUsers.Tables["Usuarios"].Rows.Add(dRow);

                //Salva no XML
                dataBaseUsers.WriteXml(sXMLFile);
            }
            else
                LiteralErro.Text = "Erro! " + ((type == "FUNC") ? "Funcionário" : "Usuário") + " já cadastrado com esse RG ou CPF.";
        }
        

        private bool UserExists()
        { 
            //Procurar por clientes com mesmo RG ou CPF
            if (this.dataBaseUsers.Tables["Usuarios"].Select("RG = '" + TextBoxRG.Text + "'").Length > 0 ||
                this.dataBaseUsers.Tables["Usuarios"].Select("CPF = '" + TextBoxCPF.Text + "'").Length > 0)
                return true;
            
            return false;
        }
    }
}
